home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
001-010
/
amok02
/
iffload
/
iffbitmapdemo.mod
< prev
next >
Wrap
Text File
|
1993-11-04
|
3KB
|
105 lines
(*---------------------------------------------------------------------------
:Program. IFFBitMapDemo.mod
:Author. Fridtjof Siebert
:Address. Nobileweg 67, D-7-Stgt-40
:Phone. 0711/822509
:Shortcut. [fbs]
:Version. 1.0
:Date. 20.04.88
:Copyright. PD
:Language. Modula-II
:Translator. M2Amiga
:Imports. IFFLoad [fbs].
:UpDate. none.
:Contents. Demo für dontopen-Option von ReadILBM().
:Remark. Let's wave !!!
---------------------------------------------------------------------------*)
MODULE IFFBitMapDemo;
FROM SYSTEM IMPORT ADR, ADDRESS, SHIFT, BITSET, LONGSET, CAST;
FROM Arguments IMPORT NumArgs,GetArg;
FROM Intuition IMPORT ScreenPtr,CloseScreen,DisplayBeep,WindowPtr,OpenScreen;
FROM Graphics IMPORT BitMap,BitMapPtr;
FROM Exec IMPORT FreeMem;
FROM IFFLoad IMPORT ReadILBM,ReadILBMFlags,ReadILBMFlagSet,NuScreen,IFFInfo,
IFFInfoType;
VAR
MyScreen: ScreenPtr; (* the Picture's Screen *)
WindowDummy: WindowPtr; (* a Dummy WindowPointer *)
Name: ARRAY[0..79] OF CHAR; (* the Pic's Name *)
length: INTEGER; (* the Name's length (not used) *)
Ciapra [0BFE001H]: SET OF (s0,s1,s2,s3,s4,s5,lmb); (* left Button *)
MyBitMap: BitMapPtr; (* for saving BitMapAddress *)
MyIFFInfo: IFFInfoType; (* for saving IFFInfo *)
PlaneSize: LONGINT; (* Size of one BitPlane *)
i: CARDINAL; (* Counts BitPlanes *)
BEGIN
(*------ Get Name: ------*)
IF NumArgs()#0 THEN
GetArg(1,Name,length);
ELSE
HALT;
END;
(*------ Read ILBM: ------*)
IF ReadILBM(Name,ReadILBMFlagSet{front,visible,dontopen},MyScreen,
WindowDummy) THEN
(*------ Save important Data: ------*)
MyIFFInfo := IFFInfo;
MyBitMap := NuScreen.customBitMap;
(* this needn't be done in this program, but has to, as soon as there *)
(* are more than one Pictures loaded. So it's done in this Example *)
(*------ Open Screen: ------*)
MyScreen := OpenScreen(NuScreen);
(*------ Wait for left Button: ------*)
WHILE lmb IN Ciapra DO END;
(*------ Close Screen: ------*)
CloseScreen(MyScreen);
(*------ Free BitMap's Memory: ------*)
(* calculate Size of BitPlane: *)
WITH MyIFFInfo.BMHD DO
IF scrnWidth>width THEN
(* If Image is greater than Screen, a bigger BitMap is allocated ! *)
PlaneSize := scrnWidth;
ELSE
PlaneSize := width;
END;
IF scrnHeight>height THEN
PlaneSize := PlaneSize DIV 8 * scrnHeight;
ELSE
PlaneSize := PlaneSize DIV 8 * height;
END;
END;
WITH MyBitMap^ DO
FOR i:=0 TO depth-1 DO
FreeMem(planes[i],PlaneSize); (* Free Memory of each Plane *)
END;
END;
FreeMem(MyBitMap,SIZE(BitMap)); (* Free Memory of BitMap-Structure *)
ELSE (* any Error occured while loading Picture: *)
DisplayBeep(NIL); (* Let's display a Beep ! *)
END;
END IFFBitMapDemo. Never forget to free BitMap's Memory !!!